To efficiently transfer data between networked computing devices, data encoding schemes are often implemented. Two common encoding schemes used in the transmission of data between computing devices include Abstract Syntax Notation One (ASN-1) and 8 bit Unicode Transformation Format (UTF8).
ASN-1 provides a set of formal rules for describing the structure of objects that are independent of machine-specific encoding techniques. The combination of ASN-1 and specific ASN-1 encoding rules (e.g., basic encoding rules (BER), canonical encoding rules (CER), distinguished encoding rules (DER), etc.) facilitates the exchange of structured data between application programs over networks by describing data structures in a way that is independent of machine architecture and implementation language. Data encoded using ASN-1 is divided into multiple length bytes (octets) and data bytes. However, in ASN-1 every length byte must be read to determine how many length bytes and how many data bytes data has been encoded into. Furthermore, in at least some cases an entire coded entity (all data blocks and length blocks) need to be read to determine the number of data bytes when using ASN-1. Therefore, many reads of a data stream may be required before a length can be determined. Moreover, the smallest size for any encoding using ASN-1 is three bytes, and the largest size is 2^1008 bytes. As used herein, the caret, “^”, represents an exponential. For example, 2^4 is equal to 16.
UTF8 is a set of encoding rules able to represent any character in the Unicode standard. UTF8 provides good byte-stream encoding of multi-byte character sets. However, UTF8 can encode data of at most 31 bits.